03-ASG생성및정책설정

ASG 생성 및 정책 설정

목표

Launch Template을 사용해서 Auto Scaling Group을 생성하고 스케일링 정책을 설정합니다.

Auto Scaling Group 생성

1단계: ASG 생성 시작

  1. EC2 콘솔 → 왼쪽 메뉴 Auto Scaling 그룹 클릭
  2. Auto Scaling 그룹 생성 버튼 클릭

2단계: 시작 템플릿 선택

Auto Scaling 그룹 이름:

시작 템플릿:

다음 클릭

3단계: 인스턴스 시작 옵션

네트워크:

가용 영역 및 서브넷:

다음 클릭

4단계: 로드 밸런싱 설정

로드 밸런싱:

기존 로드 밸런서 대상 그룹:

상태 확인:

다음 클릭

5단계: 그룹 크기 및 크기 조정 정책

그룹 크기:

크기 조정 정책:

크기 조정 정책 이름:

지표 유형:

대상 값:

다음 클릭

6단계: 알림 및 태그 (건너뛰기)

다음 클릭 (기본값 사용)

7단계: 검토 및 생성

설정 내용 확인 후 Auto Scaling 그룹 생성 클릭

ASG 동작 확인

인스턴스 생성 확인

  1. Auto Scaling 그룹webapp-web-asg 클릭
  2. 인스턴스 탭에서 새로 생성된 인스턴스 2대 확인
  3. 활동 탭에서 생성 과정 확인

인스턴스 생성에는 5-10분 정도 걸립니다.

Target Group 자동 등록 확인

  1. EC2 콘솔대상 그룹webapp-web-targets 클릭
  2. 대상 탭에서 총 3대 인스턴스 확인:
    • 기존 Web 서버 1대
    • ASG에서 새로 생성된 서버 2대

상태 확인

모든 인스턴스가 healthy 상태가 될 때까지 5-10분 대기

웹 사이트 동작 확인

ALB를 통한 접속

http://webapp-alb-xxxxxxx.ap-northeast-2.elb.amazonaws.com/

확인사항:

각 서버별 개별 확인

새로 생성된 각 서버의 Public IP로 직접 접속:

서버1: http://새서버1-Public-IP/
서버2: http://새서버2-Public-IP/  
서버3: http://새서버3-Public-IP/

모든 서버에서 동일한 기능이 동작해야 함:

중요: 기존 수동 서버 제거 시점

주의: 기존 수동 서버는 ASG 서버들이 완전히 준비된 후에만 제거합니다.

제거 전 확인사항

  1. ASG 인스턴스 상태 확인:

    • Target Group에서 모든 ASG 서버가 healthy 상태
    • 최소 2대 이상의 ASG 서버가 정상 동작
  2. 웹 사이트 동작 확인:

http://ALB-DNS-Name/webapp/
→ 정상 동작 확인
→ 여러 번 새로고침해서 다른 서버 ID 표시 확인

기존 Web 서버 제거 절차

1단계: Target Group에서 제거

  1. 대상 그룹webapp-web-targets대상
  2. 기존 수동 서버 선택 → 등록 취소
  3. 5분 대기 후 ALB 동작 재확인

2단계: EC2 인스턴스 종료

  1. 인스턴스 → 기존 Web 서버 선택
  2. 인스턴스 상태인스턴스 종료

결과: 이제 모든 Web 서버가 Auto Scaling으로 관리되고 자동 복구됩니다.

스케일링 테스트

CPU 부하 테스트

ASG가 실제로 동작하는지 테스트해봅시다.

1. 서버 하나에 SSH 접속:

# ASG로 생성된 서버 중 하나에 접속
ssh -i webapp-keypair.pem ec2-user@새서버-Public-IP

2. CPU 부하 생성:

# CPU 사용률을 80%로 올리기
stress --cpu 1 --timeout 600s

# 또는 stress가 없으면 간단한 무한루프
while true; do echo "CPU load test" > /dev/null; done

3. Auto Scaling 동작 확인:

4. 부하 중지:

# Ctrl+C로 부하 테스트 중지
# 또는 pkill stress

고급 스케일링 정책 추가 (선택사항)

수동 스케일링 정책

기본 정책 외에 수동 스케일링 정책도 추가할 수 있습니다.

1. 정책 생성:

  1. Auto Scaling 그룹webapp-web-asg 선택
  2. 자동 크기 조정 탭 → 정책 생성 클릭

Scale Out 정책:

Scale In 정책:

ASG 설정 요약

현재 구성

Auto Scaling Group: webapp-web-asg
├── 최소 용량: 1대
├── 원하는 용량: 2대  
├── 최대 용량: 4대
├── 배치: 2개 가용영역 (2a, 2c)
├── Launch Template: webapp-web-template
└── Target Group: webapp-web-targets 자동 등록

스케일링 조건

Target Tracking:
- CPU 70% 목표로 자동 조절
- 높으면 서버 추가, 낮으면 서버 제거

Health Check:
- ELB Health Check 활성화
- 5분 유예 기간
- 비정상 서버 자동 교체

문제 해결

인스턴스가 unhealthy 상태일 때

1. User Data 로그 확인:

ssh -i webapp-keypair.pem ec2-user@서버IP
sudo cat /var/log/cloud-init-output.log
sudo cat /var/log/user-data.log

2. Apache 상태 확인:

sudo systemctl status httpd
sudo systemctl restart httpd  # 필요시

3. 프록시 설정 확인:

sudo cat /etc/httpd/conf.d/webapp-proxy.conf
curl http://localhost/webapp/  # 로컬에서 테스트

ASG에서 인스턴스가 생성되지 않을 때

1. Launch Template 설정 확인
2. 서브넷 용량 확인 (IP 주소 부족)
3. 보안 그룹 설정 확인
4. IAM 권한 확인

스케일링이 동작하지 않을 때

1. CloudWatch 메트릭 확인:

2. 스케일링 정책 확인:

완료 체크리스트

운영 팁

점진적 배포

새 Launch Template 버전으로 인스턴스 교체:

  1. 새 버전의 Launch Template 생성
  2. ASG에서 인스턴스 새로 고침 기능 사용
  3. 한 번에 하나씩 교체하여 무중단 배포

비용 최적화

모니터링


Auto Scaling Group 구성 완료 이제 Multi-AZ RDS로 데이터베이스도 고가용성으로 만들어봅시다.

다음 단계: AWS EDU/Archive/조선대학교 AWS 멘토링/Week3.5-HA-Scalable-WebService/04-Multi-AZ-RDS/01-Multi-AZ-RDS이해


관련 문서: AWS EDU/Archive/조선대학교 AWS 멘토링/Week3.5-HA-Scalable-WebService/03-Auto-Scaling-Group/02-Launch-Template생성, AWS EDU/Archive/조선대학교 AWS 멘토링/Edu Architecture/README